package ae.pcfc.cldos.online.common.clddb.domain.manager;

import java.util.List;

import ae.pcfc.cldos.online.common.clddb.domain.MessageInbox;
import ae.pcfc.cldos.online.common.vo.UserInformationVO;
import ae.pcfc.cldos.online.common.vo.notifications.NotificationsDbRestrictionsVO;
import ae.pcfc.cldos.online.common.vo.tasks.TaskRequestDbRestrictions;

/**
 * 
 * @author arosa
 *
 */
public interface MessageInboxDOM{
	
	public void add(MessageInbox messageInbox);
	
	public void update(MessageInbox messageInbox);
	
	public void completeAllApplicationTasks(Long appId);
	
	public List<MessageInbox> getUserNotifications(UserInformationVO userInformationVO, 
			NotificationsDbRestrictionsVO notificationsDbRestrictionsVO);
	
	public Integer getTotalNotifications(UserInformationVO userInformationVO, 
			NotificationsDbRestrictionsVO notificationsDbRestrictionsVO);
	
	public List<MessageInbox> getUserTasks(UserInformationVO userInformationVO, TaskRequestDbRestrictions taskRequestDbRestrictions);
	
	public Integer getTasksCount(UserInformationVO userInformationVO, TaskRequestDbRestrictions taskRequestDbRestrictions);
	
	public List<MessageInbox> getUncomplitedTaskByAppId(Long appId);
	
	public MessageInbox getNotificationDetail(Long msgId);
	
	public Integer getNewNotificationsCount(UserInformationVO userInformationVO);
	
	public Integer getNewTaskCount(UserInformationVO userInformationVO);
	
	public void markNotificationAsReaded(Long mesId, UserInformationVO userInformationVO);
}
